<?php

class SwooleCallback {

    /**
     * onWorkerStart 回调
     *
     * 可用变量：
     * @param $server     swoole_server 实例
     * @param $workerId   一个从0-$worker_num之间的数字，表示这个worker进程的ID
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function workerStart($server, $workerId, $lib) {

    }

    /**
     * onMessage 回调
     *
     * 可用变量：
     * @param $server  swoole_server 实例
     * @param $frame  数据帧信息
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function message($server, $frame, $lib) {

        Logger::debug($frame->data);
        $server->push($frame->fd, 'Server got data:'.$frame->data);
    }

    /**
     * onOpen 回调
     *
     * 可用变量：
     * @param $server  swoole_server 实例
     * @param $req      Http请求对象
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function open($server, $req, $lib) {

        $server->push($req->fd, 'Client connected');
    }

    /**
     * onClose 回调
     *
     * @param $server  swoole_server 实例
     * @param $fd      连接的文件描述符
     * @param $fromId  来自哪个 poll 进程
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function close($server, $fd, $fromId, $lib) {

    }

    /**
     * onFinish 回调
     *
     * 可用变量：
     * @param $server    swoole_server 实例
     * @param $taskId    任务ID
     * @param $data      任务处理的结果内容
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function finish($server, $taskId, $data, $lib) {

    }

    /**
     * onTask 回调
     *
     * 可用变量：
     * @param $server   swoole_server 实例
     * @param $taskId   任务ID，由swoole扩展内自动生成，用于区分不同的任务，不动 worker 分配的 task id 会重复
     * @param $fromId   来自于哪个worker进程
     * @param $data     任务的内容
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function task($server, $taskId, $fromId, $data, $lib) {

    }

    /**
     * onTimer 回调
     *
     * 可用变量：
     * @param $server    swoole_server 实例
     * @param $interval  定时器时间间隔，根据$interval的值来区分是哪个定时器触发的
     * @param $lib        lib/SwooleServer 实例
     *
     * @returns
     */
    public function timer($server, $interval, $lib, $queueData) {

    }
}
